
package com.wanxi.web.service.product;

import com.wanxi.product.service.api.query.admin.TypeQuery;

import com.wanxi.product.service.api.query.enterprise.SkuQuery;
import com.wanxi.product.service.api.query.enterprise.SpuQuery;
import com.wanxi.product.service.api.result.CommonResult;
import com.wanxi.product.service.api.vo.enterprise.TypeAddInVo;
import com.wanxi.product.service.api.vo.enterprise.TypeFindAllOutVo;
import com.wanxi.product.service.api.vo.enterprise.TypeUpdateInVo;
import com.wanxi.product.service.api.vo.enterprise.*;
import com.wanxi.repertory.service.api.vo.RepertoryTotalAllocateInVo;

import java.util.List;


/**
 * ClassName: ProductEnterpriseWebService
 * Description:
 * date: 2022/1/13 16:41
 *
 * @author lxl
 * @version 1.0
 * @since JDK 1.8
 */
public interface ProductEnterpriseWebService {
    /**
     * 添加sku
     * @param skuAddInVo
     * @return
     */
    CommonResult<Long> addSku(SkuAddInVo skuAddInVo);


    /**
     * 获取sku列表
     * @param skuQuery
     * @return
     */
    CommonResult<List<SkuFindAllOutVo>> findAllSku(SkuQuery skuQuery);


    /**
     * 根据id查找sku
     * @param id
     * @return
     */
    CommonResult<SkuFindByIdOutVo> findSkuById(Long id);


    /**
     * 修改sku
     * @param skuUpdateInVo
     * @return
     */
    CommonResult updateSku(SkuUpdateInVo skuUpdateInVo);


    /**
     * 删除sku
     * @param id
     * @return
     */
    CommonResult deleteSkuById(Long id);


    /**
     * 添加spu
     * @param spuAddInVo
     * @return
     */
    CommonResult<Long> addSpu(SpuAddInVo spuAddInVo);


    /**
     * 查找当前商家管理所有的SPU
     * @param spuQuery
     * @return
     */
    CommonResult<List<SpuFindAllOutVo>> findAllSpu(SpuQuery spuQuery);


    /**
     * 根据id查询当前商家下SPU信息
     * @param spuFindByIdInVo
     * @return
     */
    CommonResult<SpuFindByIdOutVo> findSpuById(SpuFindByIdInVo spuFindByIdInVo);


    /**
     * 修改spu
     * @param spuUpdateInVo
     * @return
     */
    CommonResult updateSpu(SpuUpdateInVo spuUpdateInVo);


    /**
     * 删除spu
     * @param spuDeleteInVo
     * @return
     */
    CommonResult deleteSpu(SpuDeleteInVo spuDeleteInVo);


    /**
     * 添加分类
     * @param typeAddInVo
     * @return
     */
    CommonResult<Long> addType(TypeAddInVo typeAddInVo);


    /**
     * 获取分类列表
     * @param typeQuery
     * @return
     */
    CommonResult<List<TypeFindAllOutVo>> findAllType(TypeQuery typeQuery);


    /**
     * 根据id查询分类
     * @param id
     * @return
     */
    CommonResult<TypeFindByIdOutVo> findTypeById(Long id);


    /**
     * 修改分类
     * @param typeUpdateInVo
     * @return
     */
    CommonResult updateType(TypeUpdateInVo typeUpdateInVo);


    /**
     * 删除分类
     * @param id
     * @return
     */
    CommonResult deleteTypeById(Long id);

    /**
     * 分配库存
     * @param skuAllocateInVo
     * @return
     */
    com.wanxi.repertory.service.api.result.CommonResult allocate(RepertoryTotalAllocateInVo skuAllocateInVo);
}

